[Mobile Hacking 7] Application-Patching 취약점

[Mobile Hacking 7] Application-Patching 취약점

Lecture
Security
태그
mobile hacking
security
public
완성
Y
생성일
Mar 18, 2024 05:34 AM
LectureName
Mobile Hacking (Android- checklist)

1. 어플리케이션 패칭


1.1 패칭이란

패칭은 기존 소프트웨어에 수정 사항, 보안 업데이트, 기능 추가 등을 적용하여 소프트웨어의 버전을 업데이트하는 과정을 의미합니다. 패칭을 악의적으로 이용한다면 어플리케이션의 주요 기능등을 우회하거나 본 앱과 유사한 악성코드 앱을 만들어 사용자들에게 배포할 수 있습니다.
 
 

1.2 어플리케이션 패칭 취약점

난독화 등 어플리케이션이 패칭에 대한 방어 기법이 존재하지 않아서 패치가 가능하여, 어플리케이션의 주요 기능들을 위/변조 할 수 있다면 취약하다고 할 수 있습니다.
 
 
 

2. 실습


2.1 실습대상

취약한 어플리케이션 실습 모델인 insecurebankv2 를 대상으로 실습
 

2.2 apktool을 이용한 smail 변환

apktool -d "C:\Users\silmu\Desktop\InsecureBankv2.apk"
 

2.3 리패키징

해당 코드를 보면 루팅검사 이후 Device not Rooted라는 문자열이 출력 됩니다. 해당 문자열을 루팅 검사의 주요 로직 이라고 생각하고, 변경해보겠습니다.
notion image
 
 
  1. 원하는 부분 수정
notion image
  • 루팅 상태를 나타내는 Device not Rooted!!라는 문자열이 있음
  • 해당 문자열을 jalnik 로 변환
 
  1. 빌드
※ 윈도우는 경로 문제인진 모르겠으나 리눅스에서만 빌드가 됨…
# 리패키징 apktool b ./Insecurebankv2 -o InsecureBankPatched.apk # 사이닝 jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore .\signed.jks .\InsecureBankPatched.apk key0 # 재설치 adb install --bypass-low-target-sdk-block .\InsecureBankPatched
  • apk파일의 경우 signing을 진행해야만 설치할 수 있기 때문에 서명 또한 해줍니다.
  • 서명은 안드로이드 스튜디오에서 build -> Generate Signed Bundle 로 생성합니다.
  • 여기서 key0은 만든 키의 이름입니다.
 
  1. 확인
notion image
Device not Rooted! ➡️ 31337!
 

3. 대응 방안


3.1 난독화

안드로이드 앱들은 NDK를 사용하여 방어합니다. 여기서 NDK란 C 및 C++와 같은 언어를 사용하여 네이티브 코드로 앱의 일부를 구현할 수 있게 하는 도구 모음입니다. 하지만 소스코드 난독화가 되어 있지 않다면 프로세스를 분석하여 메모리에서 중요한 제어를 조작할 수 있습니다.
 
따라서, 난독화 기술은 클래스,메서드,필드 등의 이름을 악의적인 목적으로 사용하는 것을 방지하여야 합니다. 안드로이드 스튜디오에서는 기본적으로 프로가드 를 제공합니다.
 

3.2 난독화 프로그램 종류

프로가드
프로가드는 자바 코드에서 사용하지 않는 클래스, 필드, 메서드들을 찾은 후 삭제하여 코드 전체의 크기를 줄여주고, 클래스 필드, 메서드 등의 이름을 난독화해주는 오픈소스 프로그램입니다.
 
빌드시, MINIFYeNABLEDTRUE로 설정해주면 됩니다.
notion image
 
etc
안드로이드 난독화 프로그램
주요 기능
ProGuard
코드 축소, 난독화, 최적화, 리소스 압축
DexGuard
ProGuard 기능에 더해 클래스 이름, 메서드 이름, 리소스 이름을 무작위 문자열로 바꾸는 등의 추가 보안 기능
Allatori
코드 난독화, 암호화된 스트링과 리소스, 리소스 압축, 리소스 난독화
DashO
코드 축소, 난독화, 암호화된 리소스, 리소스 난독화, 플래그먼트 이동
ProGuard + R8
ProGuard의 난독화 및 최적화 기능과 R8의 향상된 코드 최적화 기능을 결합
DexProtector
코드 난독화, 자동 패치 관리, 암호화된 리소스, 서명 보호, 리소스 압축, 로깅 및 탐지 보호 기능